home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1995 October / Amiga-CD 1995 #10.iso / weitere_demos / adm / arexx / turbotext / insertaddress.ttx < prev   
Text File  |  1995-06-04  |  4KB  |  108 lines

  1. /* $VER InsertAddress.ttx 1.0 (02.12.92)
  2.  
  3.    Makro für TurboText.
  4.  
  5.    Fügt die zum unter dem Cursor befindlichen Nachnamen zugehörige
  6.    Adresse in den Text ein. Fragt nach, ob Adresse eingefügt werden
  7.    soll - wenn nicht, dann wird weitergesucht.
  8.  
  9.    Es könnten auch Patterns benutzt werden, doch leider liefert die
  10.    GETWORD-Funktion von TTX keine Patterns wie #? zurück.
  11.  
  12.    Written by Jan Geißler.                                              */
  13.  
  14.  
  15. OPTIONS RESULTS
  16.  
  17. GETWORD                      /*    Wort unter Cursor holen */
  18. WORT = RESULT
  19.  
  20. ADDRESS 'ADDRESSMASTER.1'
  21.  
  22. fst = 1                      /* Anfangsposition = 1 (= erste Adresse) */
  23. res = 0
  24.  
  25. DO FOREVER                   /* Endlosschleife */
  26.  
  27.    ADM.NAME = WORT
  28.    SEARCH fst ADM            /* Eintrag suchen */
  29.    res = RESULT
  30.  
  31.    IF res >-1 THEN DO        /* Rückgabewert = Nummer der gefundenen
  32.                                 Adresse */
  33.  
  34.       GETADRENTRY RESAD      /* Adresse holen in Stemvariable RESAD   */
  35.  
  36.       ADDRESS
  37.  
  38.                              /* Abfrage, ob richtige Adresse gefunden */
  39.       req = RESAD.VORNAME || "_" || RESAD.NAME
  40.       "REQUESTBOOL" "Diese_Adresse_nehmen?" req
  41.  
  42.       IF RESULT=Yes THEN DO    /* Wenn Adresse übernommen werden soll */
  43.  
  44.            MOVELEFT
  45.            GETCHAR             /* Zeichen unter Cursor                */
  46.            IF DATATYPE(RESULT,ALPHANUMERIC)=0 THEN MOVERIGHT
  47.            ELSE DO
  48.              MOVERIGHT
  49.              MOVEPREVWORD
  50.            END;
  51.  
  52.            GETCURSORPOS FOLDS  /* X/Y-Position holen                  */
  53.            PARSE VAR RESULT ver hor dum
  54.            SAY hor
  55.  
  56.            DELETEEOW                               /* Wort löschen    */
  57.            INSERT RESAD.VORNAME RESAD.NAME         /* Name einfügen   */
  58.  
  59.            ver = ver+1                             /* Y-Wert erhoehen */
  60.            INSERTLINE NOBREAK INDENT               /* Neue Zeile      */
  61.            MOVE FOLDS ver hor                      /* Cursor bewegen  */
  62.            TEXT RESAD.ADRESSE1                     /* Adreßfeld 1     */
  63.  
  64.            IF RESAD.ADRESSE2~="" THEN DO
  65.               ver = ver+1                          /* Y-Wert erhoehen */
  66.               INSERTLINE NOBREAK                   /* Neue Zeile      */
  67.               MOVE FOLDS ver hor                   /* Cursor bewegen  */
  68.               TEXT RESAD.ADRESSE2                  /* Adreßfeld 2     */
  69.            END;
  70.  
  71.            ver = ver+1                             /* Y-Wert erhoehen */
  72.            INSERTLINE NOBREAK                      /* Neue Zeile      */
  73.            MOVE FOLDS ver hor                      /* Cursor bewegen  */
  74.            TEXT RESAD.PLZ RESAD.ORT                /* PLZ Ort         */
  75.  
  76.            IF RESAD.LAND~="" THEN DO
  77.               ver = ver+1                          /* Y-Wert erhoehen */
  78.               INSERTLINE NOBREAK                   /* Neue Zeile      */
  79.               MOVE FOLDS ver hor                   /* Cursor bewegen  */
  80.               TEXT RESAD.LAND                      /* Land            */
  81.            END;
  82.  
  83.            EXIT                /* ... und Programm verlassen          */
  84.       END
  85.       ELSE                   /* Sonst: nächsten Eintrag suchen        */
  86.         ADDRESS
  87.         fst = res + 1
  88.    END
  89.    ELSE                      /* Fehler aufgetreten */
  90.       ADDRESS
  91.       SELECT
  92.         WHEN res=-2 THEN msg="AdressSpeicher_leer!"
  93.         WHEN res=-3 THEN msg="Nicht_genug_Speicher!"
  94.         WHEN res=-4 THEN msg="Aufruf_v.SEARCH_falsch!"
  95.         WHEN res=-5 THEN msg="Interner_Fehler_in_Search"
  96.         WHEN res=-6 THEN msg="Kein_Suchparam.in Stem"
  97.         WHEN res=-7 THEN msg="SearchPos_ungültig!"
  98.         OTHERWISE DO
  99.           BEEPSCREEN
  100.           EXIT
  101.         END;
  102.       REQUESTBOOL "Fehler!" msg
  103.  
  104.       EXIT
  105.  
  106.    END /* IF */
  107. END /* DO */
  108.